package com.agua.enturno.servicios;

import com.agua.enturno.excepciones.ExcepcionDeReglaDelNegocio;
import com.agua.enturno.util.DayOfWeekTime;
import com.agua.enturno.vista.dto.HorarioDTO;
import com.agua.enturno.vista.dto.HorarioFullDTO;
import com.agua.enturno.vista.dto.JornadaLaboralHabitualDTO;
import org.joda.time.Duration;

import java.util.List;

public interface JornadaLaboralHabitualService {

	JornadaLaboralHabitualDTO findById(Long jornadaId);
	
	List<HorarioDTO> findHorarios(Long jornadaId);
	
	List<HorarioFullDTO> findHorariosFull(Long jornadaId);
	
	void modificarJornada(Long jornadaId, JornadaLaboralHabitualDTO jornadaHabitualModificadaDTO, String motivo) throws ExcepcionDeReglaDelNegocio;
	
	void modificarIntervalos(Long jornadaId, DayOfWeekTime nuevoDiaYHoraDeInicio, DayOfWeekTime nuevoDiaYHoraDeFin, String motivo) throws ExcepcionDeReglaDelNegocio;
	
	void modificarDuracionDeLosTurnos(Long jornadaId, Duration nuevaDuracion) throws ExcepcionDeReglaDelNegocio;
	
	void agregarVacantesPorTurno(Long jornadaId, Integer vacantesAAgregar) throws ExcepcionDeReglaDelNegocio;

	void quitarVacantesPorTurno(Long jornadaId, Integer vacantesAQuitar, String motivo) throws ExcepcionDeReglaDelNegocio;
	
}
